package com.draby.starfantasymaze.dto.map;

import org.jetbrains.annotations.NotNull;

import java.io.Serializable;
import java.util.Arrays;

public abstract class Map implements Serializable {
    /**
     * 保存地图中每个格子的信息
     */
    protected Block[][] maze;
    /**
     * 地图的宽度
     */
    protected Integer width;
    /**
     * 地图的高度
     */
    protected Integer height;

    public Block[][] getMaze() {
        return maze;
    }

    public Integer getWidth() {
        return width;
    }

    public Integer getHeight() {
        return height;
    }

    /**
     * 抽象方法，初始化地图，由子类来重写
     * @param height 地图的高
     * @param width 地图的宽
     * @return true: 初始化成功; 否则为 false
     */
    public abstract boolean initMap(int height, int width);

    @Override
    public @NotNull String toString() {
        if (maze == null) {
            return null;
        }
        StringBuilder info = new StringBuilder();
        for (int i = 0; i < maze.length; i++) {
            for (int j = 0; j < maze[0].length; j++) {
                info.append("maze[").append(i).append("][").append(j).append("]: ").append(maze[i][j]).append("\n");
            }
            info.append("\n");
        }
        return info.toString();
    }
}
